The present invention relates to a method for correlating or matching the features supported by a device with the features that may be requested by other devices communicating with that device through one or more versions of a protocol for communication between the devices.
A common feature of contemporary computer and communications systems is that the systems are comprised of a plurality of cooperatively functioning but separate units, or devices, each of which may perform specific tasks or a range of generalized tasks. The devices are interconnected, either directly or through a network, and exchange requests for operations by means of common protocols, or communications languages, each of which is designed for inter-device communication with respect to the tasks or range of tasks performed by the devices. A given protocol will include the commands, responses and information formats necessary to support requests by a requesting device, such as a processor unit, for the execution of functions or operations by a responding device with which it is communicating, such as a printer. The functions and operations that may be performed, or supported, by a responding device are commonly referred to as the xe2x80x9cfeaturesxe2x80x9d of the responding device. A requesting device is correspondingly referred to as supporting a xe2x80x9cfeaturexe2x80x9d when it is capable of issuing a request for that feature of a responding device, and a protocol is referred to as supporting a xe2x80x9cfeaturexe2x80x9d when it includes the commands, responses and information formats necessary to communicate a request for that xe2x80x9cfeaturexe2x80x9d from the requesting device to the responding device, and the corresponding responses from the responding device to the requesting device.
It is commonly understood and accepted that the use of such protocols has been of significant advantage to the users and manufacturers of such systems and the devices used in such systems and the use of such protocols has become a standard practice, with many such protocols becoming industry standards. For example, a personal computer system is typically comprised of a central processing unit with an associated monitor and keyboard and one or more peripheral devices, such as printers, scanners, and modems. The central processing unit communicates with the peripheral devices to request operations, or features, that are specific to each of the peripheral devices and, in each instance, does so using a protocol that is appropriate to the type or range of features supported by each device. The use of common protocols by central processing units and peripheral devices from different sources or manufacturers has been of significant advantage to both the users of personal computers and the manufacturers of personal computers and peripheral devices in allowing the free combination of central processing units and peripherals devices from different sources and in different system configurations.
In further example, such protocols are also commonly used in larger systems comprised of one or more requesting devices, such as personal computers, workstations or shared processing units, and a number of responding devices, such as shared printers, file servers and communications servers, that are interconnected through a network and serve a number of users. In such larger systems the shared devices are typically more complex than in, for example, a personal computer system, and typically support a wider range of features, so that the protocols are correspondingly more extensive and complex. The use of such protocols, however, have provided advantages similar to those accruing in personal computer systems in allowing the free combination of devices from different sources and of different types in a wide range of system configurations.
To illustrate the uses of such protocols further, a personal computer system will commonly include one or more printers to generate printed copies of electronic documents of various types and the personal computer will communicate with the printers through a printer protocol that will typically be used in common by a range of printers from different manufacturers and having different features. In larger systems, such as a system serving a corporate department or facility, the printing facilities will be provided by a device of the type referred to as a xe2x80x9cpaper handling controllerxe2x80x9d and other devices in the system, such as servers, processors, workstations and personal computers, will communicate with the xe2x80x9cpaper handling controllerxe2x80x9d through a xe2x80x9cpaper handling protocolxe2x80x9d. In this regard, a paper handling controller may be, for example, a printer, a multi-function device such as a Hewlett-Packard Mopier, which performs the functions of a networked printer, a copier and a scanner, a printer controller connected from a network and controlling a number of individual printers to form a printer complex or node, or a facsimile device. It will be understood, therefore, that the devices and protocols appearing in a large system may be analogous to those appearing in a smaller system, the term xe2x80x9cpaper handling controllerxe2x80x9d as opposed to xe2x80x9cprinterxe2x80x9d denotes the wider range of features that may appear in the devices of a large system and the term xe2x80x9cpaper handling protocolxe2x80x9d denotes the expansion or extension of the protocol or protocols to accommodate the wider range of features, and the adaptations necessary for communication in a large system, networked environment. For example, in a large system, or in a more complex small system, a paper handling controller may be a printer controller having access to and controlling a complex of printers or other devices that may provide a wide range of features. The devices of the system, such as the processors, workstations or personal computers, will communicate with the paper handling controlling through a paper handling protocol supporting the range of features supported by the devices available to the paper handling controller and adapted to a networked environment. The paper handling controller will, in turn, communicate with the individual printers or other devices using the same or a similar paper handling protocol or protocols, depending upon the printers or other types of paper handling devices connected from or accessible to the paper handling controller.
The use of such protocols, however, results in certain problems in the systems and protocols of the prior art. As described, a given protocol or version of a protocol will support a given set of features that may be requested by a first device, such as a processor unit, and that are supported by a second device with which it is communicating, such as a paper handling controller. It is known and intended, however, that the features supported by the devices of a system, such as printers, will change with time as devices are added or removed or updated, so that previously supported features are no longer available or are modified while new features become available and are supported. A change in the features supported by the devices, and particularly the addition of new features or modifications to existing features, in turn requires the addition of corresponding features to the protocol or the modification of existing features of the protocol.
In the prior art, changes to protocols are implemented by the creation and distribution of updated or new versions of the protocols, or of new protocols, as required. The methods of the prior art, however, result in numerous problems because the features supported by a protocol are dependent upon and determined by the version of that protocol that is used. For example, a device that uses a particular version of a protocol because of a feature in that version of the protocol generally must, as a result, support all features of that version of the protocol to avoid errors or fault conditions in the system operation arising from requests for features that are supported by the portal but not supported by the device. In addition, if a device supports features that are not supported by the version of a protocol used by the system or a requesting device, the features supported by the device that are not supported by features of the protocol cannot be called and are unavailable. This problem is compounded yet further in that it is common for a device to make assumptions regarding requests for features, that is, to interpret requests for features, according to the version of the protocol in which the request is submitted. As such, a device may submit a request for a feature in one version of a protocol and the responding device may interpret that request according to the provisions of a different version of the protocol, resulting in an error or an undesired response to the request.
The installation of a new version of a protocol in a system, for example, to accommodate new or updated features, such as the addition of a new device having new features or the updating of a device with new or modified features, can therefore result in problems arising from mismatches between the features of the protocol and the features of the devices. For example, the installation of a new version of a protocol to accommodate or in anticipation of new or modified features may result in older features or older versions of features no longer being supported. Likewise, when a new device is added to a system or new or modified features are added to an existing device, those features will not be available to the system unless the protocol is updated accordingly.
It will therefore be appreciated that tracking and correlating the features supported by the devices of a system and the features of the protocols communicating with the devices of the system is a significant problem. It will also be appreciated that these problems are greatly compounded in systems employing a number of devices that use a common protocol as there may be differences in the features supported by the devices, depending upon what features each is intended to support or their age or update state. It will also be recognized the problem of correlating protocols with features is not limited to hardware type devices, such as printers, facsimile transceivers, network interfaces and modems, but extends to xe2x80x9csoftware devicesxe2x80x9d, that is, programs with which a user or other device, including another program, communicates by means of a protocol. Examples of such xe2x80x9csoftware devicesxe2x80x9d may include the programs that reside in Internet servers and communicate with Internet browsers or electronic mail programs, programs residing on a system server to be shared among the system users, input/output programs or drivers that are shared or used by other programs, and so on.
The present invention provides a solution to these and other problems of the prior art.
The present invention is directed to a features matching mechanism for use in an information processing system including functional devices for performing operations of the system wherein the devices communicate through a protocol to request features to be performed by others of the devices. Each feature is an operation of the system supported by at least one version of the protocol and each device includes a functional unit supporting at least a subset of the features of the protocol and a protocol mechanism executing at least one version of the protocol for communicating requests for features and responses to requests for features between the device and others of the devices.
The feature matching mechanism includes, in a first device, a supported features table for storing information identifying the features supported by the first device and a match mechanism. The match mechanism generates and transmits a declaration to at least one second device with which the first device is to communicate using the protocol supported by the first device wherein each declaration is generated from information from the first device supported features table and identifies the features supported by the first device. The first device receives a declaration from at least one second device with which the first device, wherein each declaration from a second device identifies the features supported by the second device, and the match mechanism of the first device constructs a matching features table identifying, for each second device from which the first device has received a declaration, the features supported in common by the first device and the corresponding second device. The match mechanism of the first device then monitors each request for a feature that is directed to a second device represented in the matching features table to determine whether a feature identified in a request is supported by the second device to which the request is directed.
In one embodiment of the present invention, a declaration from a second device identifies the features supported in common by the first device and the corresponding second device. In this embodiment, a second device includes a device supported features table for storing information identifying the features supported by the second device and a match mechanism, similar to those of a first device. The match mechanism of the second device receives a declaration from a first device identifying the features supported by the first device and compares the features identified in the declaration from the first device as supported by the first device with the features identified in the second device supported features table to identify the features supported in common by the first device and the second device. The second device then transmits to the first device a declaration identifying the features supported in common by the first device and the second device.
In an alternate embodiment, wherein a declaration from a second device identifies the features supported by the second device, but not those supported in common by the first and second devices, the match mechanism of the first device determines the features supported in common by the first device and the second device by comparing the features identified in the declaration from the second device with the features identified in the first device supported features table as supported by the first device.
In a yet further embodiment, each device includes a supported features table for storing information identifying the features supported by the device and a match mechanism. The match mechanism generates and transmits a declaration to at least one other device with which the device is to communicate using the protocol supported by the device wherein each declaration is generated from information from the supported features table of the device and identifies the features supported by the device. The device will receive a reply declaration from at least one other device with which device is to communicate, wherein each reply declaration from another device identifies the features supported in common by that device and the other device. The match mechanism of the device constructs a matching features table identifying, for each other device from which the device has received a reply declaration, the features supported in common by the first device and the corresponding second device.
The device may also receive a declaration from at least one other device identifying the features supported by each of the other devices providing a declaration. The match mechanism of the device will compare the features identified in each declaration from another device as supported by the other device with the features identified in the device""s supported features table to identify the features supported in common by the device and each other device from which it has received a declaration of supported features. The match mechanism of the device will then construct and transmit, to each other device from which the device has received a declaration of supported devices, a reply declaration identifying the features supported in common by the device and the corresponding other device.